2020/12/16 3 min read
Oculus Quest版Beat Saberのmod開発について調べたこと
目次
Oculus Quest版Beat Saberのmod開発について調べたこと
#きっかけ (2020-12-16)
https://github.com/riku1227/BSQuest-QuestDarthMaul こちらのmodをbeatsaberの最新版に対応させたいと思った(なお結局できてない模様) だが基本的なことはちょっとわかったのでまとめる
#準備 (2020-12-16)
#PCに入れておくもの
- beatsaberで使用されているバージョンのUnity(現在最新バージョンの1.13では2019.3.15)
- Android SDK (というかadb)
- Android NDK
- SideQuest (wifi adbを使うため。別になくてもいい)
- 好きなエディタ(vscodeを使ったけどもっといいのがあるのかな・・・?)
#Questに入れておくもの
- BMBF導入済みbeatsaber (あたりまえだけど)
#(2020-12-16)
基本的にはsc2adという方のgithubを見るのが良い。大体この方が作ったものを使う。
#ライブラリ
- beatsaber-hook
beatsaberが何か処理をする前に好きな動作を注入できる要となるライブラリ
- modloader beatsaber-hookをビルドするのに必要だったけどbeatsaber-hookのバイナリを拾ってくればいらないはず?
- BeatSaber-Quest-Codegen
beatsaber-hookではメソッドを呼び出すのに文字列で呼び出さないといけなかったりするがこれを使うといい感じに呼び出すことができる。自動生成されているらしい。 こちらのバイナリにbeatsaber-hookが付属していたのでbeatsaber-hookをビルドする必要はない、はず。まだ使っていない。
#作る (2020-12-16)
まずどこかからひな形としてプロジェクトを持ってくるのがよい。自分は上のmodのプロジェクトを使ったけどどのmodも同じような感じだからどこかにテンプレートがあるのかも?
主に手順としては
- ndkpath.txtにndkのパスを記述
- bmbfmod.jsonをいい感じに書き換える
- ライブラリのバイナリとヘッダーファイルをextern/以下に入れる
- Android.mkをいい感じに書き換える
- src/main.cpp以下にいろいろ書き換える
Android.mkは正直よくわかってないがとりあえず以下のようにした
Android.mk
## ライブラリを追加
include $(CLEAR_VARS)
## ライブラリの名前
## ヘッダーファイルがあるところ?
## バイナリのパス
include $(PREBUILT_SHARED_LIBRARY)
## 略
## 最後のセクションっぽいところに
LOCAL_SHARED_LIBRARIES += beatsaber-hook_0_8_4 #先ほど指定した名前
LOCAL_CFLAGS += -DVERSION='"1.0.1"' -DID='"アプリ名"' -I"libil2cppのパス(例: C:\Program Files\Unity\Hub\Editor\2019.3.15f1\Editor\Data\il2cpp\libil2cppあとは気合 VSCodeのincludePathの指定がよくわからない